/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2024/06/14
 * 枚举练习
 * (季节常量)
 */
public enum SeasonConstant {
    SPRING("春天", "万物复苏"), SUMMER("夏天", "万物蓬勃成长的季节"), AUTUMN, WINTER;

    /**
     * 空的构造方法，如果不创立没有参数的就会报错
     */
    SeasonConstant() {
    }

    /**
     * 有参的构造方法，如果不创立有参数的常量就会报错
     */
    SeasonConstant(String name, String detail) {
        this.name = name;
        this.detail = detail;
    }

    private String name;
    private String detail;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }


    public static void test(SeasonConstant seasonConstant) {
        switch (seasonConstant) {
            case SPRING -> System.out.println("春天");
            case SUMMER -> System.out.println("夏天");
            case AUTUMN -> System.out.println("秋天");
            case WINTER -> System.out.println("冬天");
//            case ddddd->System.out.println("xx天");
            /*
            从这个方法就可以看出枚举类比较安全，只能选择已成名的枚举常量，区别于静态常量，静态常量没有也能case。
             */
        }
    }


    public static void main(String[] args) {
        /*
        System.out.println(SeasonConstant.SPRING.name());//name() 父类的实例方法	返回enum实例声明时的名称

        System.out.println(SeasonConstant.SPRING.ordinal());//ordinal() 父类的实例方法	返回每个实例在声明时的次序

        SeasonConstant[] values = SeasonConstant.values();
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i].name());//values() 静态的自动生成的	可以遍历enum实例，其返回enum实例的数组
        }

        System.out.println(SeasonConstant.valueOf("AUTUMN"));//valueOf() 静态的自动生成的	根据给定的名称返回相应的enum实例

         */

//        SeasonConstant[] values = SeasonConstant.values();
//        for (int i = 0; i < values.length; i++) {
//            System.out.println(values[i].getDetail());
//        }

        test(SeasonConstant.AUTUMN);
    }
}
